#ifndef CONEXIONSERVER_H_
#define CONEXIONSERVER_H_

#include "ConexionBidireccional.h"
#include "Socket.h"
#include "../../Server/BattleMasterInterface.h"
#include "../ProtocoloPlano.h"
#include "Sender.h"

/*
 * @class ConexionServer
 *
 * @brief Representa una conexion con un cliente
 *
 */
class ConexionServer
{
public:
	/**
	* Constructor
	*/
	ConexionServer(SocketProtocoloPlano* socket,BattleMasterInterface* game,int listenPort,int broadcastPort,ColaMensajes* mensajes,const bool* conexionActiva);

	void addToSend(DTO* dto);

	virtual ~ConexionServer();

	void terminar();

	std::string getCliente();

protected:
	std::string cliente;

	ConexionBidireccional* conexionACliente;

	ColaMensajes* enviarACliente;
	ColaMensajes* colaMensajesServer;

private:
	void handshake(SocketProtocoloPlano* socket,BattleMasterInterface* game,int listenPort,int broadcastPort,ColaMensajes* enviar,ColaMensajes* recibir,const bool* conexionActiva);
};

#endif /* CONEXIONSERVER_H_ */
